import Vue from 'vue'
import App from './App.vue'
// 引入三级联动---全局组件
import TypeNav from '@/components/TypeNav/index.vue'
import Carousel from '@/components/Carousel/index.vue'
import Pagination from '@/components/Pagination/index.vue'
// 引入路由
import router from '@/router'
// 引入仓库
import store from '@/store'
// 引入MockServer.js --- 数据
import '@/mock/mockServe.js'
// 引入轮播图swiper样式
import 'swiper/css/swiper.min.css'

// 统一接口api文件夹里面的全部请求函数, 统一引入
import * as API from '@/api/index.js'

// 按需引入elementui
import { Button,MessageBox } from 'element-ui';
// 引入懒加载插件
import VueLazyload from 'vue-lazyload'
// 引入懒加载图片
import atm from'@/assets/1.gif'
// 引入vee-vaildate表单验证
import '@/plugins/valideta.js'

// 注册三级联动全局组件
Vue.component(TypeNav.name, TypeNav)
Vue.component(Carousel.name, Carousel)
Vue.component(Pagination.name, Pagination)
Vue.component(Button.name, Button);
// ElementUI注册组件的时候还有一种写法：挂载在原型上
Vue.prototype.$msgbox = MessageBox;
Vue.prototype.$alert = MessageBox.alert;

Vue.config.productionTip = false

// 注册懒加载插件
Vue.use(VueLazyload, {
  // 懒加载默认的图
  loading: atm ,
})
new Vue({
  render: h => h(App),
  // 全局事件总线$bus配置
  beforeCreate() {
    Vue.prototype.$bus = this
    Vue.prototype.$API = API
  },
  // 注册路由信息
  router,
  // 注册仓库：组件实例的身上会多出一个属性$store属性
  store
}).$mount('#app')
